let express = require('express');
let Router = express.Router();
module.exports = Router;

// 导入数据库
let query = require('./db');

const jwt = require('jsonwebtoken');
// // token的秘钥
let secret = 'wssb996'
// // 导入加密模块，是内置模块，不需要安装
// let crypto = require('crypto')

// 登录
Router.post('/login', async (req, res) => {
    let {
        username,
        password
    } = req.body.data;
    try {
        // 把密码加密后再去查询用户登录
        // let md5 = crypto.createHash('md5')
        // md5.update(password)
        // let newPassword = md5.digest('hex')
       
        // 查询用户
        let data = await query(`select * from user where username='${username}' and password='${password}';`);
        // 如果根据用户名和密码能查询到数据则说明登录成功，否则登录失败
        // 当查询不到数据的时候 data的值为一个空数组
        if (data.length == 0) {
            res.send({
                code: 400,
                msg: '用户名或者密码错误'
            })
            return;
        }

       
        let info = {
            ...data[0]
        }
        let token = jwt.sign(info, secret, {
            // 过期时间为30分钟
            expiresIn: 60 * 30 * 1000
        })
        //返回token
        res.send({
            code: 200,
            msg: '登录成功了喔',
            token
        })
    } catch (error) {
        console.log(error);
        res.send({
            code: 400,
            msg: '请求出错'
        })
    }
})

// 获取user信息
// 获取用户信息的数据接口
Router.get('/me', async (req, res) => {

    let {
        userId
    } = req.info;
   
    try {
        let data = await query(`select * from user where userId=${userId};`)
        delete data[0].pass_word;
        res.send({
            code: 200,
            msg: '查询成功',
            ...data[0]
        })
    } catch (error) {
        res.send({
            code: 400,
            msg: error
        })
    }

})

// 检测用户是否存在的数据接口
// /api/user/check/用户名
Router.get('/check/:username',async (req, res) => {
    let { username } = req.params;
    console.log(username);
    try {
        let data = await query(`select * from user where userName='${username}';`);
        // 存不存在都会返回数组
        // 存在则数组有数据
        // 不存在:数组为空数组
        if (data.length == 0) {
            res.send({
                code: 200,
                msg:'正常注册'
            })
            return
        }
        res.send({
            code: 400,
            msg:'用户名已经存在'
        })

    } catch (error) {
        res.send({
            code: 400,
            msg:error
        })
    }
})

// 注册
Router.put('/register', async (req, res) => {
    let {
        username,
        password,
    } = req.body.data

    // 创建加密方式 为md5加密方式
    // let md5 = crypto.createHash('md5')
    // md5.update(password);
    // 签名认证之后把密码导出
    // let newPassword = md5.digest('hex');
    try {

        await query(`insert into user values(${null},'${username}','${password}',${null},${null},${null},${null});`)
        res.send({
            code: 200,
            msg: '注册成功'
        })
    } catch (err) {
        console.log(`insert into user values(${null},'${username}','${password}',${null},${null},${null},${null})`);
        res.send({
            code: 400,
            msg: '注册失败1'
        })
    }
})